13
תגובות
אני משתמש בפונקציה SplClassLoader שמנתבת קבצי מחלקות על פי הנייספייס.
הבעיה שהיא לא מפעילה את המחלקות, קוד:

$loader = new SplClassLoader('framework\Router', FRAMEWORK_PATH . '/Routes');
$loader->register();



בתוך התיקיה של Routes, כל הקבצים בעלי אותו נייםספייס -
namespace framework\Router;


framework זה שם התיקיה שבה כל הקבצים קיימים.

13 תשובות

avatar ענה intval ב 07 לאוקטובר 2012 #

איפה לקחת את המחלקה הזו? אולי המימוש שלה לא תקין.
חוץ מזה, אתה יכול לכתוב פונקציה משלך בשביל זה ואז גם לדאבג אותה ביתר קלות.

avatar ענה PHPDeveloper ב 07 לאוקטובר 2012 #

מכאן לקחתי -https://gist.github.com/221634

avatar ענה PHPDeveloper ב 07 לאוקטובר 2012 #

אני חושב שהבעיה היא בניתוב של התיקיה בנייםספייס.. יכול להיות?

avatar ענה intval ב 07 לאוקטובר 2012 #

יכול להיות.
ניסית להוסיף echo שורה מעל לאינקלוד ולראות איפה הוא מנסה לחפש את הקבצים שלך?

avatar ענה PHPDeveloper ב 07 לאוקטובר 2012 #

איזה אינקלוד? בפונקציה עצמה SplClassLoader ?

avatar ענה PHPDeveloper ב 07 לאוקטובר 2012 #

אוקי, בדקתי את זה בלי הפונקציה הזו אלא עשיתי רק Include() לקובץ. בהתחלה לא הופיעה כלום, רק לאחר שהורדתי את הnamespace הקלאס עבד מצוין. אני חושב שמכאן הבעיה, אתה יודע איך אני יכול לטפל בזה שהקלאס לואדר יעבוד?

avatar ענה intval ב 07 לאוקטובר 2012 #

יכול שאתה יוצר מופע של המחלקה בלי לרשום את הניימספייס?

new \mynamespace\class1();

avatar ענה PHPDeveloper ב 07 לאוקטובר 2012 #

בהחלט צודק, כעת עובד.
אבל אתה יודע מה הבעיה עם SplClassLoader ? יותר נוח לי אם הקלאס כבר יטען ואני יוכל להשתמש בו כרגע ולא בצורה הזו שלך..

avatar ענה intval ב 07 לאוקטובר 2012 #

אתה לא תוכל לכתוב משהו אחר חוץ מ

\namespace\class1()

בגלל שככה עובדים ניימספייסים. ואין שום דבר שלא בסדר במחלקה שלך. היא בסה"כ עושה אינקלוד לקובץ, לא יותר מזה.

avatar ענה iiddaannyy ב 07 לאוקטובר 2012 #

הדבר הכי מעצבן ב-php זה הסינטקס של הניימספייסים.

avatar ענה intval ב 08 לאוקטובר 2012 #

לא יודע לגבי הסינטקס, אבל ה using קצת צולע לעומת שפות אחרות.

avatar ענה PHPDeveloper ב 08 לאוקטובר 2012 #

זאת אומרת שהטעות הייתה אצלי. לא יצרתי אירוע נכון לאובייקט. חשבתי שהוא טוען את הכל ישירות ואין צורך להשתמש בסגנון שלך.

avatar ענה iiddaannyy ב 08 לאוקטובר 2012 #

@intval
גם ה-using, אבל אני די מתעצבן מהסינטקס. כאילו, באמת... באקסלאש? זה נראה לא טוב.